// 辅助函数：小数按位数舍入
// MDN: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math/round
function round(number, precision) {
  return Math.round(+number + "e" + precision) / Math.pow(10, precision)
}

/**
 * 保留小数位数
 * @param  {String | Number} num 数值
 * @param  {Number} digit 保留位数
 * @return {String} 数值字符串
*/
function toFixed(num, digit) {
  digit = digit >> 0 // 取整
  
  let str = round(Number(num) || 0, digit).toString() || '' // 小数按位数舍入
  let intStr = str.split('.')[0]
  let floatStr = str.split('.')[1] || ''
  let digitOffset = digit - floatStr.length
  
  if (!digit) return intStr

  if (digitOffset > 0) { // 差位补0
    return intStr + '.' + floatStr +  '0'.repeat(digitOffset) 
  } else {
    return intStr + floatStr.substring(0, digitOffset) + '.' + floatStr.substring(digitOffset, floatStr.length)
  }
}

// // 测试
// toFixed(12.3002, 5)
// // '12.30020'
// toFixed(12.3002, 2)
// // '12.30'
